<?php
include('simple_html_dom.php');

function ping($host, $port, $timeout) 
{ 
  $tB = microtime(true); 
  $fP = fSockOpen($host, $port, $errno, $errstr, $timeout); 
  if (!$fP) { return "down"; } 
  $tA = microtime(true); 
  return round((($tA - $tB) * 1000), 0)." ms"; 
}

function pulisci($col){
	$col =  ereg_replace('<h2>' , '' ,$col );
	$col =  ereg_replace('</h2>' , '' ,$col );
	$col = ereg_replace('<strong>' , '' ,$col);
	$col = ereg_replace('</strong>' , '' ,$col);
	$col = ereg_replace('<br>' , '' ,$col);
	$col = ereg_replace('</div>' , '' ,$col);
	$col =  ereg_replace(' ' , '' ,$col );
	return $col;
}

function pulisciStaz($col){
	$col = ereg_replace('<h2>' , '' ,$col );
	$col = ereg_replace('</h2>' , '' ,$col );
	$col = ereg_replace('<strong>' , '' ,$col);
	$col = ereg_replace('</strong>' , '' ,$col);
	$col = ereg_replace('<br>' , '' ,$col);
	$col = ereg_replace('</div>' , '' ,$col);
	return $col;
}
function timeStamp($ora) {
        $timeAtt=split (':',$ora);
        return ((int)$timeAtt[0]*3600)+((int)$timeAtt[1]*60);
}

function dettagli($html,$intestazione) {
        date_default_timezone_set('Europe/Rome');
        $data=time();
        $data=date('H:i', $data);      
        $timeLoc=timeStamp($data);
 
	$json = array ();
	$json_com = array ();
	$json_Effettuate = array ();
	$numEffettuate=0;
	$valErrato=False;
	foreach ($html->find('div.giaeffettuate') as $row) {
		$json_com = array ();
		$numEffettuate++;
		$stazione = $row->find('h2');
		$oraPart = "";
		$oraArr = "";
		$i=0;
                $j=0;
		foreach ($row->find('p') as $p) {                        
			$ora=$p->find('strong');
			if ($i==-1) {
                           $oraPart=$ora[0];
                           $timePart = timeStamp($oraPart); 
                           if ($j==0 && $timeLoc > $timePart) {
                               $json_com = array();
                               $numEffettuate = 0;
			       $valErrato=True;                              
                           } else $j=1;
                        }
			else
				$oraArr=$ora[0];
			$i++;
		}
		if ($valErrato ) break; 
		$bin=split ('Previsto:',$row);
		$binPrev=split ('Binario',$bin[1]);
		$binReal=split ('Reale:',$bin[1]);
		$json_com['stazione'] = pulisciStaz($stazione[0]);
		$json_com['partenzaProgrammata'] = pulisci($oraPart);
		$json_com['partenzaPrevista'] = pulisci($oraArr);
		$json_com['binarioProgrammato'] = pulisci($binPrev[0]);
		$json_com['binarioReale'] = pulisci($binReal[1]);
		array_push($json_Effettuate, $json_com);
	}	
	$json_DaEffettuate = array ();
	$numDaEffettuate=0;
	
	if ($valErrato) {
		foreach ($html->find('div.giaeffettuate') as $row) {
			$json_com = array ();
			//$numDaEffettuate++;
			$stazione = $row->find('h2');
			$oraPart = "";
			$oraArr = "";
			$i=0;
			foreach ($row->find('p') as $p) {

				$ora=$p->find('strong');
				if ($i==0) $oraPart=$ora[0];
				else
					$oraArr=$ora[0];
				$i++;
			}
			$bin=split ('Previsto:',$row);
			$binPrev=split ('Binario',$bin[1]);
			$binReal=split ('Reale:',$bin[1]);
			$json_com['stazione'] = pulisciStaz($stazione[0]);
			$json_com['arrivoProgrammato'] = pulisci($oraPart);
			$json_com['arrivoPrevisto'] = pulisci($oraArr);
			$json_com['binarioProgrammato'] = pulisci($binPrev[0]);
			$json_com['binarioReale'] = pulisci($binReal[1]);
			array_push($json_DaEffettuate, $json_com);
		}
	}
	
	foreach ($html->find('div.corpocentrale') as $row) {
		$json_com = array ();
		//$numDaEffettuate++;
		$stazione = $row->find('h2');
		$oraPart = "";
		$oraArr = "";
		$i=0;
		foreach ($row->find('p') as $p) {

			$ora=$p->find('strong');
			if ($i==0) $oraPart=$ora[0];
			else
				$oraArr=$ora[0];
			$i++;
		}
		$bin=split ('Previsto:',$row);
		$binPrev=split ('Binario',$bin[1]);
		$binReal=split ('Reale:',$bin[1]);
		$json_com['stazione'] = pulisciStaz($stazione[0]);
		$json_com['arrivoProgrammato'] = pulisci($oraPart);
		$json_com['arrivoPrevisto'] = pulisci($oraArr);
		$json_com['binarioProgrammato'] = pulisci($binPrev[0]);
		$json_com['binarioReale'] = pulisci($binReal[1]);
		array_push($json_DaEffettuate, $json_com);
	}

	$array = array (
			"stato"=> 0,
			"fermateEffetuate" => $json_Effettuate,
			"numeroFermateEffettuate" => $numEffettuate,
			"fermateDaEffettuare" => $json_DaEffettuate,
			"numeroFermateDaEffettuare" => count( $json_DaEffettuate));
	return json_encode($array);
}





function parserHtml($dettagli) {
	for ($i=0; $i<=1; $i++) {
		$html = file_get_html('http://mobile.viaggiatreno.it/viaggiatreno/mobile/scheda?dettaglio=visualizza&numeroTreno='.$dettagli.'&tipoRicerca=numero&lang=IT');
		$i = 0 ;
		$intestazione = '';
		if (strstr($html, "class=\"giaeffettuate") || strstr($html, "class=\"corpocentrale") || $i!=1 ) break;

	}

	$i = 0 ;

	foreach($html->find('th') as $element) {
		$value = strtolower($element->title);
		$value =  ereg_replace('num. treno' , 'numero' ,$value);
		$value =  ereg_replace('prezzo di ' , '' ,$value);
		$value =  ereg_replace('categoria' , 'tipo' ,$value);
		$value =  ereg_replace(' \*\*' , '' ,$value);
		$intestazione[$i] =  strtolower($value);
		$i++;
	}

	return dettagli($html,$intestazione);
}

ping("mobile.viaggiatreno.it",80,10);
$dettagli = $_GET['nTreno'];

echo parserHtml($dettagli);
?>			